const express = require('express');
const fs = require('fs');
const shardUpload = require('../controller/shardUpload.js');

const multer = require('multer'); // 或者使用busboy等  

// 配置multer存储引擎（这里只是一个示例，你需要实现自己的逻辑）  
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    // 存储临时文件的目录，你需要在这里处理分片并重组成文件
    DirectoryExistenceAndCreate('./temp')
    cb(null, './temp');
  },
  filename: (req, file, cb) => {
    let name = req.query.name;
    let index = parseInt(req.query.index, 10);
    let chunks = parseInt(req.query.chunks, 10);
    // 这里只是一个示例文件名，你需要根据文件名、索引等信息生成唯一的文件名  
    cb(null, `temp-${name}-${chunks}-${index}`);
  }
});
const upload = multer({ storage: storage }).fields([{ name: 'chunk', maxCount: 1 }]);

// express有提供一个顶级的路由模块。直接使用
const router = express.Router();

router.post('/update', upload, shardUpload.shardUpload)
router.get('/files', shardUpload.showFiles)
router.get('/dele', shardUpload.deleteFile)

module.exports = router;

// 传入文件夹的路径看是否存在，存在不用管，不存在则直接创建文件夹
let DirectoryExistenceAndCreate = function (reaPath) {
  try {
    fs.statSync(reaPath)
  } catch (e) {
    // 不存在文件夹，直接创建 {recursive: true} 这个配置项是配置自动创建多个文件夹
    fs.promises.mkdir(reaPath, { recursive: true })
  }
}